#pragma once

#include "hdmap/HDMapExports.hpp"
#include "hdmap/HDMapCommon.hpp"

namespace Navinfo
{
	namespace Engine
	{
		
		/**
		 * @brief meta data of data and sdk
		 */
		class HDMAP_API_PUBLIC HDMapMetadataInfo
		{
		public:
			friend class HDMapImpl;
			/**
			 * @brief Get Region id of map data
			 * @return region id
			 */
			uint32_t GetRegionId() const{ return mRegionId; }

			/**
			 * @brief Get UpdateRegion id of map data
			 * @return update ragion id
			 */
			uint32_t GetUpdateRegionId() const{ return mUpdateRegionId; }

			/**
			 * @brief get Country code of map data.
			 * @return e.g. CHN
			 */
			const char* GetCountryCode() const{ return mCountryCode.c_str(); }

			/**
			 * @brief get sub Country code of map data.
			 * @return e.g. SH
			 */
			const char* GetSubCountryCode() const{ return mSubCountryCode.c_str(); }

			/**
			 *  @brief Get Data Version infomation.
			 *  return local data version description, e.g. chn_nif_1000KM_Sample
			 */
			const char* GetDataVersion() const{ return mDataVersion.c_str(); }

			/**
			 *  @brief Get SDK Version infomation.
			 *  @return version contain three numbers, first is major version,second number is minor version and third number is revision version. such as 1.0.15
			 */
			const char* GetSDKVersion() const{ return mSDKVersion.c_str(); }
		private:
			uint32_t		mRegionId;
			uint32_t		mUpdateRegionId;
			std::string		mCountryCode;
			std::string		mSubCountryCode;
			std::string		mDataVersion;
			std::string		mSDKVersion;
		};
	}
}
namespace Navinfo{
	namespace HDMap{
		typedef Navinfo::Engine::HDMapMetadataInfo MetaData;
	}
}